Cloud Build waitFor の挙動
waitFor の値が指定されない場合、ビルドステップは、ビルド リクエスト内の先行するすべてのビルドステップが正常に完了するまで待機した後に実行されます。
実は直前のやつが終わったら動いたりしないか
"先行する" は
yaml のタスク定義上?
実行開始タイミング?
code:cloudbuild.yaml
steps:
- id: prepare
name: alpine:latest
entrypoint: /bin/echo
# pararell
- id: task1
name: alpine:latest
entrypoint: /bin/ash
- id: task2-1
name: alpine:latest
entrypoint: /bin/ash
# waitFor なしのこれはいつ実行される?
# - task1 も task2 も待つ
# - task1 がコケたら始まらない?
# - 実は直前のやつが終われば動く
- id: task2-2
name: alpine:latest
entrypoint: /bin/ash
- id: task3
name: alpine:latest
entrypoint: /bin/ash
- id: last
name: alpine:latest
entrypoint: /bin/ash
やってみる
$ gcloud builds submit --config ./cloudbuild.yaml .
task3, task2-1 , task1 は同時に起動する
waitFor しているやつは LIFO なのか、毎回 yaml 上では後のほうが先に実行される印象がある
task2-2 は
task1 と task2-1 を待つ
直前の task2-1 だけでなく task1 も待つので yaml 定義上先に定義しているものを待つ
task3 を待たない
先に起動されていても待ってない → "先行する" はタスク定義上の順序
code:steps.log
BUILD
Starting Step #0 - "prepare" Step #0 - "prepare": Pulling image: alpine:latest Step #0 - "prepare": latest: Pulling from library/alpine Step #0 - "prepare": e6b0cf9c0882: Pulling fs layer Step #0 - "prepare": e6b0cf9c0882: Verifying Checksum Step #0 - "prepare": e6b0cf9c0882: Download complete Step #0 - "prepare": e6b0cf9c0882: Pull complete Step #0 - "prepare": Digest: sha256:3983cc12fb9dc20a009340149e382a18de6a8261b0ac0e8f5fcdf11f8dd5937e Step #0 - "prepare": Status: Downloaded newer image for alpine:latest Step #0 - "prepare": docker.io/library/alpine:latest Step #0 - "prepare": prepare Finished Step #0 - "prepare" Starting Step #4 - "task3" Starting Step #2 - "task2-1" Starting Step #1 - "task1" Step #1 - "task1": Already have image: alpine:latest Step #4 - "task3": Already have image: alpine:latest Step #2 - "task2-1": Already have image: alpine:latest Finished Step #2 - "task2-1" Finished Step #1 - "task1" Starting Step #3 - "task2-2" Step #3 - "task2-2": Already have image: alpine:latest Finished Step #4 - "task3" Finished Step #3 - "task2-2" Starting Step #5 - "last" Step #5 - "last": Already have image: alpine:latest Finished Step #5 - "last" PUSH
DONE